/**
 * @file debug.h
 * Funções para debug do programa.
 *
 * As funções/macros definidas aqui só existirão caso a macro NDEBUG não esteja
 * definida, assim como a função assert. Portanto, quando estiver compilando em
 * modo de produção, acrescente a definição da macro NDEBUG nas flags do
 * compilador e as funções definidas aqui automaticamente não irão gerar nenhum
 * código.
 */

#ifndef DEBUG_H_
#define DEBUG_H_
#include <assert.h>

#ifdef NDEBUG

#define debug_print debug_nothing

#define debug_log debug_nothing

static inline void debug_nothing(const char *str, ...) {}

#else

/// Imprime mensagens de debug na tela.
#define debug_print printf

/// Imprime mensagens de debug em um arquivo.
#define debug_log fprintf

#endif /* NDEBUG */

#endif /* DEBUG_H_ */
